Skip to content

Commit d0c3a72

Browse files
authored
refactor(pyndakaas): simplify internal encoder/constraint matching (#105)
1 parent 60ee644 commit d0c3a72

File tree

1 file changed

+20
-33
lines changed

1 file changed

+20
-33
lines changed

crates/pyndakaas/src/lib.rs

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -147,49 +147,36 @@ mod pindakaas {
147147
.aggregate(db, &lin.0)
148148
.map_err(map_unsat)?;
149149
match aggregated {
150-
BoolLinVariant::Cardinality(c) => match enc {
151-
None | Some(Encoder::SORTING_NETWORK) => {
152-
SortingNetworkEncoder::default().encode(db, &c)
153-
}
154-
Some(Encoder::ADDER) => AdderEncoder::default().encode(db, &c),
155-
Some(Encoder::SORTED_WEIGHT_COUNTER) => {
156-
SwcEncoder::default().encode(db, &c)
157-
}
158-
Some(Encoder::TOTALIZER) => TotalizerEncoder::default().encode(db, &c),
150+
BoolLinVariant::Cardinality(c) => match enc.unwrap_or(Encoder::SORTING_NETWORK)
151+
{
152+
Encoder::SORTING_NETWORK => SortingNetworkEncoder::default().encode(db, &c),
153+
Encoder::ADDER => AdderEncoder::default().encode(db, &c),
154+
Encoder::SORTED_WEIGHT_COUNTER => SwcEncoder::default().encode(db, &c),
155+
Encoder::TOTALIZER => TotalizerEncoder::default().encode(db, &c),
159156
_ => return invalid_enc("Cardinality", enc.unwrap()),
160157
},
161-
BoolLinVariant::CardinalityOne(c) => match enc {
162-
None | Some(Encoder::BITWISE) => BitwiseEncoder::default().encode(db, &c),
163-
Some(Encoder::ADDER) => AdderEncoder::default().encode(db, &c),
164-
Some(Encoder::LADDER) => LadderEncoder::default().encode(db, &c),
165-
Some(Encoder::PAIRWISE) => PairwiseEncoder::default().encode(db, &c),
166-
Some(Encoder::SORTED_WEIGHT_COUNTER) => {
167-
SwcEncoder::default().encode(db, &c)
168-
}
169-
Some(Encoder::SORTING_NETWORK) => {
170-
SortingNetworkEncoder::default().encode(db, &c)
171-
}
172-
Some(Encoder::TOTALIZER) => TotalizerEncoder::default().encode(db, &c),
158+
BoolLinVariant::CardinalityOne(c) => match enc.unwrap_or(Encoder::BITWISE) {
159+
Encoder::BITWISE => BitwiseEncoder::default().encode(db, &c),
160+
Encoder::ADDER => AdderEncoder::default().encode(db, &c),
161+
Encoder::LADDER => LadderEncoder::default().encode(db, &c),
162+
Encoder::PAIRWISE => PairwiseEncoder::default().encode(db, &c),
163+
Encoder::SORTED_WEIGHT_COUNTER => SwcEncoder::default().encode(db, &c),
164+
Encoder::SORTING_NETWORK => SortingNetworkEncoder::default().encode(db, &c),
165+
Encoder::TOTALIZER => TotalizerEncoder::default().encode(db, &c),
173166
_ => return invalid_enc("CardinalityOne", enc.unwrap()),
174167
},
175-
BoolLinVariant::Linear(lin) => match enc {
176-
None | Some(Encoder::TOTALIZER) => {
177-
TotalizerEncoder::default().encode(db, &lin)
178-
}
179-
Some(Encoder::ADDER) => AdderEncoder::default().encode(db, &lin),
180-
Some(Encoder::SORTED_WEIGHT_COUNTER) => {
181-
SwcEncoder::default().encode(db, &lin)
182-
}
168+
BoolLinVariant::Linear(lin) => match enc.unwrap_or(Encoder::TOTALIZER) {
169+
Encoder::TOTALIZER => TotalizerEncoder::default().encode(db, &lin),
170+
Encoder::ADDER => AdderEncoder::default().encode(db, &lin),
171+
Encoder::SORTED_WEIGHT_COUNTER => SwcEncoder::default().encode(db, &lin),
183172
_ => return invalid_enc("BoolLinear", enc.unwrap()),
184173
},
185174
BoolLinVariant::Trivial => return Ok(()),
186175
}
187176
.map_err(map_unsat)?;
188177
}
189-
ConstraintArg::Formula(f) => match enc {
190-
None | Some(Encoder::TSEITIN) => {
191-
TseitinEncoder.encode(db, &f.0).map_err(map_unsat)?;
192-
}
178+
ConstraintArg::Formula(f) => match enc.unwrap_or(Encoder::TSEITIN) {
179+
Encoder::TSEITIN => TseitinEncoder.encode(db, &f.0).map_err(map_unsat)?,
193180
_ => {
194181
return invalid_enc("Formula", enc.unwrap());
195182
}

0 commit comments

Comments
 (0)